/**
 * 被Route包裹的组件会被赋予this.props.history,match等方法，但是被它包裹的组件的子组件没有这个方法，
 * 用withRouter组件可以实现，但是V6中没有这个方法了，需要自己封装
 * 函数组件中如果要跳转网页，可以用navigate（任何组件都可用），但是类组件没有hooks，需要封装withRouter方法
 */

import React from 'react'
import { useNavigate, useParams, useLocation } from 'react-router-dom'
export default function withRouter(Component) {
    // 高阶函数高阶组件  接收一个组件，return出去一个组件，这里return了一个函数组件function(props){}

    return function (props){

        const push = useNavigate();

        const params = useParams();
        const location = useLocation();

        // history里传个对象{push:push,params:params}
        return <Component {...props} history={{ push, params, location }} />;
    }
}



